#!/bin/bash

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$SCRIPT_DIR"
BUILD_DIR="$PROJECT_ROOT/build"
APP_BUNDLE="$BUILD_DIR/QtOpenGLDemo.app"
APP_EXECUTABLE="$APP_BUNDLE/Contents/MacOS/QtOpenGLDemo"

# 如果未显式提供 QT6_PATH，尝试自动检测 ~/Qt/6.x/macos
if [ -z "${QT6_PATH:-}" ]; then
  DEFAULT_QT_PATH="$(ls -d "$HOME"/Qt/6.*/macos 2>/dev/null | head -n 1 || true)"
  if [ -n "$DEFAULT_QT_PATH" ]; then
    export QT6_PATH="$DEFAULT_QT_PATH"
    echo "使用自动检测到的 Qt6 路径: $QT6_PATH"
  fi
fi

# 若可执行文件不存在则触发构建
if [ ! -x "$APP_EXECUTABLE" ]; then
  echo "未检测到可执行文件，开始调用 build.sh 进行构建..."
  if [ -n "${QT6_PATH:-}" ]; then
    QT6_PATH="$QT6_PATH" "$PROJECT_ROOT/build.sh"
  else
    "$PROJECT_ROOT/build.sh"
  fi
fi

if [ ! -x "$APP_EXECUTABLE" ]; then
  echo "✗ 构建之后仍未找到可执行文件，请检查构建日志。" >&2
  exit 1
fi

# 在支持 open 的系统上使用 open，否则直接运行可执行文件
if command -v open >/dev/null 2>&1; then
  echo "使用 open 启动 QtOpenGLDemo.app ..."
  open "$APP_BUNDLE"
else
  echo "直接运行 QtOpenGLDemo 可执行文件 ..."
  "$APP_EXECUTABLE"
fi
